package com.example.service;

import com.example.common.Result;
import com.example.mapper.AnalysisMapper;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * 数据分析服务类
 * 提供各种业务数据分析功能，包括流量趋势、用户行为、商品排行等分析服务
 */
@Service
public class AnalysisService {

    @Resource
    private AnalysisMapper analysisMapper;

    /**
     * 日流量趋势分析
     * 调用数据访问层获取日流量趋势数据并封装成统一返回结果
     * @return Result 统一返回结果对象，包含日流量趋势分析数据
     */
    public Result dayTrafficTrendAnalysis(){
        return Result.success(analysisMapper.dayTrafficTrendAnalysis());
    }

    /**
     * 小时流量趋势分析
     * 调用数据访问层获取小时流量趋势数据并封装成统一返回结果
     * @return Result 统一返回结果对象，包含小时流量趋势分析数据
     */
    public Result hourTrafficTrendAnalysis(){
        return Result.success(analysisMapper.hourTrafficTrendAnalysis());
    }

    /**
     * 流量漏斗转化分析
     * 调用数据访问层获取流量漏斗转化数据并封装成统一返回结果
     * @return Result 统一返回结果对象，包含流量漏斗转化分析数据
     */
    public Result trafficFunnelConversionAnalysis(){
        return Result.success(analysisMapper.trafficFunnelConversionAnalysis());
    }

    /**
     * RFM客户分析
     * 调用数据访问层获取RFM客户分析数据并封装成统一返回结果
     * RFM模型是一种重要的客户价值分析方法，通过最近购买时间、购买频率、购买金额三个维度分析客户价值
     * @return Result 统一返回结果对象，包含RFM客户分析数据
     */
    public Result rfmCustomerAnalysis(){
        return Result.success(analysisMapper.rfmCustomerAnalysis());
    }

    /**
     * 用户留存分析
     * 调用数据访问层获取用户留存分析数据并封装成统一返回结果
     * 用户留存分析用于评估产品的用户粘性和长期价值
     * @return Result 统一返回结果对象，包含用户留存分析数据
     */
    public Result userRetentionAnalysis(){
        return Result.success(analysisMapper.userRetentionAnalysis());
    }

    /**
     * Top10品类分析
     * 调用数据访问层获取Top10品类销售数据并封装成统一返回结果
     * 用于分析最受欢迎的商品品类排行情况
     * @return Result 统一返回结果对象，包含Top10品类分析数据
     */
    public Result top10Category(){
        return Result.success(analysisMapper.top10Category());
    }

    /**
     * Top10商品分析
     * 调用数据访问层获取Top10商品销售数据并封装成统一返回结果
     * 用于分析最受欢迎的商品排行情况
     * @return Result 统一返回结果对象，包含Top10商品分析数据
     */
    public Result top10Items(){
        return Result.success(analysisMapper.top10Items());
    }

}

